using UnityEngine;

public class CurrencySystem : Singleton<CurrencySystem>
{
    [SerializeField]
    private int coinTest; // 测试用的初始金币数量
    private string CURRENCY_SAVE_KEY = "MYGAME_CURRENCY";

    public int TotalCoins { get; set; } // 总金币数量

    private void Start()
    {
        PlayerPrefs.DeleteKey(CURRENCY_SAVE_KEY);//开始清空金币数据
        LoadCoins(); // 加载金币数量
    }

    private void LoadCoins()
    {
        TotalCoins = PlayerPrefs.GetInt(CURRENCY_SAVE_KEY, coinTest); // 从 PlayerPrefs 中读取金币数量，默认为 coinTest 的值
    }

    public void AddCoins(int amount)
    {
        TotalCoins += amount; // 增加金币数量
        PlayerPrefs.SetInt(CURRENCY_SAVE_KEY, TotalCoins); // 将金币数量保存到 PlayerPrefs
        PlayerPrefs.Save(); // 保存 PlayerPrefs 的修改
    }

    public void RemoveCoins(int amount)
    {
        if (TotalCoins >= amount)
        {
            TotalCoins -= amount; // 减少金币数量
            PlayerPrefs.SetInt(CURRENCY_SAVE_KEY, TotalCoins); // 将金币数量保存到 PlayerPrefs
            PlayerPrefs.Save(); // 保存 PlayerPrefs 的修改
        }
    }

    private void AddCoins(Enemy enemy)
    {
        AddCoins(1);
    }

    private void OnEnable()
    {
        EnemyHealth.OnEnemyKilled += AddCoins;
    }
    private void OnDisable()
    {
        EnemyHealth.OnEnemyKilled -= AddCoins;
    }
}
